package ltd.sumfsy.grain.mapper;

import java.util.List;
import ltd.sumfsy.grain.bean.Equipment;
import ltd.sumfsy.grain.bean.example.EquipmentExample;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

/**
 * 设备表对应的数据库操作
 * @author 范颂扬
 * @create 2021-05-12 20:39
 */
@Component
public interface EquipmentMapper {

    /**
     * 查询符合条件的记录数
     * @param example 条件封装类
     * @author 范颂扬
     * @return long 返回记录数
     * @date 2021-05-12 20:40
     */
    long countByExample(EquipmentExample example);

    /**
     * 删除符合条件的记录
     * @param example 条件封装类
     * @author 范颂扬
     * @return int 返回插入的记录数
     * @date 2021-05-12 20:40
     */
    int deleteByExample(EquipmentExample example);

    /**
     * 根据主键 ID 删除记录
     * @param id 主键 ID
     * @author 范颂扬
     * @return int 返回删除的记录数
     * @date 2021-05-12 20:40
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 插入数据（记录中所有字段除了自增主键外，其余都不能少）
     * @param record 要插入的数据对象
     * @author 范颂扬
     * @return int 返回插入的记录数
     * @date 2021-05-12 20:41
     */
    int insert(Equipment record);

    /**
     * 插入数据（插入对象中不为空的字段）
     * @param record 要插入的数据对象
     * @author 范颂扬
     * @return int 返回插入的记录数
     * @date 2021-05-12 20:41
     */
    int insertSelective(Equipment record);

    /**
     * 查询符合条件的记录
     * @param example 条件封装类
     * @author 范颂扬
     * @return java.util.List<ltd.sumfsy.grain.bean.Equipment> 返回查询到的对象列表
     * @date 2021-05-12 20:46
     */
    List<Equipment> selectByExample(EquipmentExample example);

    /**
     * 根据主键 ID 查询记录
     * @param id 主键 ID
     * @author 范颂扬
     * @return ltd.sumfsy.grain.bean.Data 返回查询到的记录
     * @date 2021-05-12 20:47
     */
    Equipment selectByPrimaryKey(Integer id);

    /**
     * 更新符合条件的记录（数据中的字段不空就更新）
     * @param record 更新的数据
     * @param example 条件封装类
     * @author 范颂扬
     * @return int 返回更新的记录条数
     * @date 2021-05-12 20:47
     */
    int updateByExampleSelective(@Param("record") Equipment record, @Param("example") EquipmentExample example);

    /**
     * 更新符合条件的记录（数据中的所有字段都进行更新）
     * @param record 更新的数据
     * @param example 条件封装类
     * @author 范颂扬
     * @return int 返回更新的记录条数
     * @date 2021-05-12 20:47
     */
    int updateByExample(@Param("record") Equipment record, @Param("example") EquipmentExample example);

    /**
     * 根据主键更新记录（数据中的字段不空就更新）
     * @param record 更新的数据
     * @author 范颂扬
     * @return int 返回更新的记录条数
     * @date 2021-05-12 20:47
     */
    int updateByPrimaryKeySelective(Equipment record);

    /**
     * 根据主键更新记录（数据中的字段全部更新）
     * @param record 更新的数据
     * @author 范颂扬
     * @return int 返回更新的记录条数
     * @date 2021-05-12 20:48
     */
    int updateByPrimaryKey(Equipment record);
}